package jmine.tec.hydra.codec;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import jmine.tec.script.ScriptLogger;


/**
 * Value object que encapsula o retorno de um {@link Encoder}.
 * 
 * @author Marco
 */
public class EncoderData {

    private final InputStream messageStream;

    private final String identification;

    private final List<ScriptLogger> loggers;
    
    /**
     * @param messageStream {@link InputStream} com a mensagem.
     * @param identification identificação utilizada na mensagem.
     * @param loggers com os logs gerados na execução do script
     */
    public EncoderData(InputStream messageStream, String identification, ScriptLogger... loggers) {
        this.messageStream = messageStream;
        this.identification = identification;
        if (loggers == null) {
            this.loggers = new ArrayList<ScriptLogger>();
        } else {
            this.loggers = Arrays.asList(loggers);
        }
    }
    
    /**
     * @return {@link InputStream} com a mensagem.
     */
    public InputStream getMessageStream() {
        return this.messageStream;
    }

    /**
     * @return identificação utilizada na mensagem.
     */
    public String getIdentification() {
        return this.identification;
    }
    
    /**
     * @return loggers com logs e informações de sucesso na execução. 
     */
    public List<ScriptLogger> getLoggers() {
        return this.loggers;
    }
}
